iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
SideProject30

UVA題型研究系列 第 1

DAY1:Sum of distances

  • 分享至 

  • xImage
  •  

Uva 10041 Vito’s family
內容
世界聞名的黑社會老大Vito Deadstone要搬到紐約來了。在那裡他有一個大家族,並且他們都住在Lamafia大道上。因為Vito時常要拜訪所有的親戚,他想要找一間離他們最近的房子,也就是說他希望從他的家到所有的親戚的家的距離的和為最小。
他恐嚇你寫一個程式來幫助幫助他解決這個問題。
輸入說明
輸入的第一列有一個整數代表以下有多少組測試資料。
每組測試資料一列,第一個整數 r(0 < r < 500),代表他親戚的數目。接下來的r個整數s1,s2,......sr為這些親戚房子的門牌號碼(0 < si <30000)。注意:有些親戚的門牌號碼會相同。
輸出說明
對每一組測試資料,輸出從他的新家到所有的親戚的家的距離的和為最小為多少。2個門牌號碼si、sj的距離為si-sj的絕對值。

題目大意:有個黑社會老大有很多親戚,他要搬到離這些親戚最近的地方
解題:找中位數,算距離總和

def solve2(n, nums):
    nums.sort() # 將 nums 列表按照升序進行排序
    mid = nums[n//2]  # 計算中間元素的索引並賦值給 mid
    ans = 0     # 初始化答案變數 ans 為 0
    for i in nums:  # 遍歷 nums 列表中的每個元素 i
        ans += abs(i - mid)     # 將 i 與 mid 的絕對差值加到 ans 中
    return ans   # 返回最終答案 ans

T = int(input())    #寫有多少要測試的資料
for t in range(T):  
    n = list(map(int, input().split()))     # 讀取一行輸入,將其轉換為整數列表,第一個元素為 n,其餘元素為 nums
    print(solve2(n[0], n[1:]))  # 呼叫 solve2 函數並印出結果

下一篇
DAY2:Difference and absolute value
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言